/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.pa165.ddtroops.serviceinterfaces;

import cz.muni.fi.pa165.ddtroops.dto.RaceDTO;
import java.util.List;

/**
 *
 * @author Matěj
 */
public interface RaceService
{
    /**
     * Crates new Race.
     * @param name
     * @param description
     * @param strength
     * @param dexterity
     * @param constitution
     * @param intelligence
     * @param wisdom
     * @param charisma
     * @return
     */
    RaceDTO createNewRace(String name, String description, Byte strength,
            Byte dexterity, Byte constitution, Byte intelligence,
            Byte wisdom, Byte charisma);

    /**
     * Method creates new Race from Race object.
     * @param race instance of class Race to be created
     * @throws DataAccessException in case of any exception on a persistence layer
     */
    void create(RaceDTO raceDTO);

    /**
     * Method update updates state of given Skill.
     * @param race instance of class Skill to be updated
     * @throws DataAccessException in case of any exception on a persistence layer
     */
    void update(RaceDTO raceDTO);

    /**
     * Method delete deletes given Skill.
     * @param race instance of class Skill to be removed
     * @throws DataAccessException in case of any exception on a persistence layer
     */
    void delete(RaceDTO raceDTO);

    /**
     * Method getById retrieves Race with specified id
     * @param id id of Race
     * @return instance of class Race with specified id
     * @throws DataAccessException in case of any exception on a persistence layer
     */
    RaceDTO getById(Long id);

    /**
     * Method getAll fetches all the Races.
     * @return list of instances of class Race
     * @throws DataAccessException in case of any exception on a persistence layer
     */
    List<RaceDTO> getAll();

}
